home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / dbms_mag / 9101 / nebel1.jan < prev    next >
Text File  |  1990-11-13  |  7KB  |  263 lines

  1. Listing 1.
  2. «TS14»
  3.  
  4. 1    * == Maintenance Routines Module for Program == 
  5. 3    PROCEDURE maitproc 
  6. 5    * ----- set up environment ----- 
  7. 6    SET TALK OFF 
  8. 7    SET ECHO OFF 
  9. 8    SET BELL OFF 
  10. 9    SET STATUS OFF 
  11. 10    * ----- enter selection loop ----- 
  12. 11    DO WHILE .T. 
  13. 12      * --- 
  14. 13      CLEAR 
  15. 14      mv_choice = 0 
  16. 15      * ----- do menu caption ----- 
  17. 16      @5, 31 SAY "System Maintenance" 
  18. 17      @ROW()-1, 29 TO ROW()+1, 50 
  19. 18      * -- 
  20. 19      TEXT 
  21. 20 
  22. 21                       1.  Reindex and Pack Databases 
  23. 22  
  24. 23                       2.  Prepare Data Dictionary 
  25. 24 
  26. 25                       3.  Return to Prior Menu 
  27. 26    ENDTEXT 
  28. 27    * ----- call routine to offer select prompt ----- 
  29. 28    @ROW()+2, 27 SAY "Select by Number ===>" 
  30. 29    @ROW(), COL()+2 GET mv_choice FUNCTION "Z" PICTURE "9"
  31. 30      * -- 
  32. 31      READ 
  33. 32      * -- 
  34. 33      DO CASE 
  35. 34       * ----- 
  36. 35                         CASE mv_choice = 1 
  37. 36                      * -- call routine for reindexing and packing --
  38. 37                                        DO sys_rndx 
  39. 38                    * ----- 
  40. 39          CASE mv_choice = 2 
  41. 40             * --- call routine for data dictionary -- 
  42. 41             DO sys_data 
  43. 42             * ----- 
  44. 43          CASE mv_choice = 3 
  45. 44             * ----- return to calling menu ----- 
  46. 45             EXIT 
  47. 46             * -- 
  48. 47          OTHERWISE 
  49. 48             * ----- invalid key ----- 
  50. 49             ?? CHR(7) 
  51. 50             * ----- 
  52. 51       ENDCASE 
  53. 52       * ----- 
  54. 53    ENDDO 
  55. 54    * ---- 
  56. 55    RETURN 
  57. 56
  58. 57    * ====== Routine to Reindex Selected Databases ===== 
  59. 58 
  60. 59    PROCEDURE sys_rndx 
  61. 60 
  62. 61    CLEAR 
  63. 62    CLOSE ALL 
  64. 63    * ----- initialize pack switch defaulted to no ----- 
  65. 64    mv_pack = "N" 
  66. 65    * ----- present pack option ----- 
  67. 66    @10, 18 SAY "Do You Want to Pack During Reindexing? "; 
  68. 67                                    GET mv_pack PICTURE "Y" 
  69. 68    * -- 
  70. 69    READ 
  71. 70    * ----- initialize database select switches ----- 
  72. 71    mv_authfil = "N" 
  73. 72    mv_bookfil = "N" 
  74. 73    * --- call routine to allow database selection --- 
  75. 74    DO sysrsele 
  76. 75    * --- 
  77. 76    CLEAR 
  78. 77    * --- 
  79. 78    @6, 21 SAY "---- Reindexing System Databases ----" 
  80. 79    * ----- 
  81. 80    @18, 10 SAY "Note:  Override Any Error Messages " + ;
  82. 81            "with 'Proceed' or 'Ignore'" 
  83. 82    * ----- window to monitor reindexing operation -----
  84. 83    DEFINE WINDOW sys_rndx FROM 8, 10 TO 16, 70 
  85. 84    ACTIVATE WINDOW sys_rndx 
  86. 85    * ----- 
  87. 86    SET TALK ON 
  88. 87    SET SAFETY OFF 
  89. 88    * ----- call routine to do indexing ----- 
  90. 89    DO sysrindx 
  91. 90    * ----- 
  92. 91    SET SAFETY ON 
  93. 92    SET TALK OFF 
  94. 93    * ----- release progress monitoring window ----- 
  95. 94    RELEASE WINDOWS sys_rndx 
  96. 95    CLOSE ALL 
  97. 96    * ---- 
  98. 97    RETURN 
  99. 98
  100. 99    * === Routine to Select Databases for Reindexing === 
  101. 100 
  102. 101    PROCEDURE sysrsele 
  103. 102 
  104. 103    CLEAR 
  105. 104    * ----- do screen caption ----- 
  106. 105    @6, 24            SAY "Select Databases for Reindexing" 
  107. 106    @ROW()+2, 22      SAY "AUTHFILE.DBF - Authors Database:" 
  108. 107    @ROW(),   COL()+2 GET mv_authfil PICTURE "Y" 
  109. 108    @ROW()+2, 22      SAY "BOOKFILE.DBF - Books Database  :" 
  110. 109    @ROW(),   COL()+2 GET mv_bookfil PICTURE "Y" 
  111. 110    * -- 
  112. 111    READ 
  113. 112    * -- 
  114. 113    RETURN 
  115. 114 
  116. 115    * == Routine to Index, Optionally Pack Databases == 
  117. 116 
  118. 117    PROCEDURE sysrindx 
  119. 118 
  120. 119    IF mv_authfil = "Y" 
  121. 120        * ----- turn code execution display on ----- 
  122. 121       SET ECHO ON 
  123. 122       * ----- authors database ----- 
  124. 123       USE authfile 
  125. 124       * --- delete all tags for ground up rebuild --- 
  126. 125       DELETE TAG authlnfn OF authfile 
  127. 126       DELETE TAG authcode OF authfile 
  128. 127       * ----- pack if requested ----- 
  129. 128       IF mv_pack = "Y" 
  130. 129          PACK 
  131. 130       ENDIF 
  132. 131       * ----- rebuild indexes ----- 
  133. 132       INDEX ON UPPER(authorln) + ; 
  134. 133             UPPER(authorfn)                                                 TAG authlnfn 
  135. 134       INDEX ON authcode                                                   TAG authcode 
  136. 135       * ----- turn code execution display off ----- 
  137. 136       SET ECHO OFF 
  138. 137       * - 
  139. 138    ENDIF 
  140. 139    * --- 
  141. 140    IF mv_bookfil = "Y" 
  142. 141       * ----- turn code execution display on ----- 
  143. 142       SET ECHO ON 
  144. 143       * ----- books database ----- 
  145. 144       USE bookfile 
  146. 145       * ----- delete tag for ground up rebuild ----- 
  147. 146       DELETE TAG authtitl OF bookfile 
  148. 147       * ----- pack if requested ----- 
  149. 148       IF mv_pack = "Y" 
  150. 149          PACK 
  151. 150       ENDIF 
  152. 151       * ----- rebuild index ----- 
  153. 152       INDEX ON STR(authcode,4,0) + ; 
  154. 153             UPPER(booktitl)                 TAG authtitl 
  155. 154       * ----- turn code execution display off ----- 
  156. 155       SET ECHO OFF 
  157. 156       * - 
  158. 157    ENDIF 
  159. 158    * ---- 
  160. 159    RETURN 
  161. 160 
  162. 161    * ======= Routine to Generate Data Dictionary ======= 
  163. 162 
  164. 163    PROCEDURE sys_data 
  165. 164     
  166. 165    CLEAR 
  167. 166    * ----- call routine to do in progress message ----- 
  168. 167    @10, 20 SAY "Preparing Data Dictionary for System" 
  169. 168    * ----- 
  170. 169    CLOSE ALL 
  171. 170    SET CONSOLE OFF 
  172. 171    * ----- clear the source code spooler ----- 
  173. 172    SET SAFETY OFF 
  174. 173    USE spooler 
  175. 174    ZAP 
  176. 175    SET SAFETY ON 
  177. 176    * ----- spool the maintenance procedures module ----- 
  178. 177    APPEND FROM maitproc.prg SDF 
  179. 178    * --- 
  180. 179    GO TOP 
  181. 180    * ----- seek to start of reindexing routines ----- 
  182. 181    LOCATE FOR line = "PROCEDURE sysrindx" 
  183. 182    * ----- enter processing loop ----- 
  184. 183    DO WHILE .NOT. EOF() 
  185. 184       * -----  
  186. 185       DO CASE 
  187. 186                * ----- check if return encountered ----- 
  188. 187          CASE line = UPPER("return") 
  189. 188         * ----- no more databases to process ----- 
  190. 189             EXIT 
  191. 190             * --- check if start of indexing routine --- 
  192. 191          CASE line = "   USE" 
  193. 192             * --- get name of database to variable --- 
  194. 193             mv_dbf = SUBSTR(spooler->line,8,15) 
  195. 194             * --- call routine to print descriptions --
  196. 195             DO prnt_dbf 
  197. 196             * ----- 
  198. 197       ENDCASE 
  199. 198       * -- 
  200. 199       SKIP 
  201. 200       * -- 
  202. 201    ENDDO 
  203. 202    * --- 
  204. 203    CLOSE ALL 
  205. 204    SET CONSOLE ON 
  206. 205    * ---- 
  207. 206    RETURN 
  208. 207
  209. 208    * Routine to Print Database and Index Descriptions == 
  210. 209     
  211. 210    PROCEDURE prnt_dbf 
  212. 211 
  213. 212    SET PRINT ON 
  214. 213    * ----- call routine to do descriptive header ----- 
  215. 214    DO headdata 
  216. 215    * ----- list structure of database to printer ----- 
  217. 216    SELECT 2 
  218. 217    USE &mv_dbf 
  219. 218    SET MARGIN TO 10 
  220. 219    LIST STRUCTURE TO PRINT 
  221. 220    SET MARGIN TO 0 
  222. 221    USE 
  223. 222    SELECT spooler 
  224. 223    * ----- seek to first indexing command line ----- 
  225. 224    DO WHILE SUBSTR(spooler->line,4,5) # "INDEX" 
  226. 225       * --- 
  227. 226       SKIP 
  228. 227       * --- 
  229. 228    ENDDO 
  230. 229    * --- enter loop to print all indexing commands --- 
  231. 230    DO WHILE SUBSTR(spooler->line,4,1) # "*" 
  232. 231       * ----- print index description line ----- 
  233. 232       ? SPACE(10) + TRIM(spooler->line) 
  234. 233       * --- 
  235. 234       SKIP 
  236. 235       * -- 
  237. 236    ENDDO 
  238. 237    * --- 
  239. 238    SET PRINT OFF 
  240. 239    EJECT 
  241. 240    * -- 
  242. 241  RETURN 
  243. ~242
  244. ~~~~243  * == Routine for Header for Data Directory Listings== 
  245. 244 
  246. 245  PROCEDURE headdata 
  247. 246  
  248. 247  * ----- 
  249. 248  ? 
  250. 249  ? 
  251. 250  ? 
  252. 251  ? SPACE(20) + "Structure and Indexes for:  " + ; 
  253. 252     TRIM(UPPER(mv_dbf)) + ".DBF" 
  254. 253  ? 
  255. 254  ? SPACE(10) + REPLICATE("-",65) 
  256. 255  ? 
  257. 256  * ---- 
  258. 257  RETURN 
  259. 258  
  260. 259  * =============== End of Listing 1 ================= 
  261. ~